package com.choosefine.base.shixiaobao.base;

import java.io.Serializable;
import java.lang.reflect.Method;

import com.fasterxml.jackson.annotation.JsonIgnore;

import io.swagger.annotations.ApiModelProperty;


public class Base implements Serializable{
//	private static Logger logger = LoggerFactory.getLogger(Base.class);
	private static final long serialVersionUID = -1815174357643494012L;
	
//	private static Map<Class<?>,PropertyInfo[]> class2Props = new HashMap<Class<?>,PropertyInfo[]>(128);
    /**
     * 创建时间
     */
//	@JsonIgnore
    private Long ctime;
    /**
     * 更新时间
     */
	@JsonIgnore
    private Long utime;
    
    /**
     * 数据是否有效
     */
    private Integer isValid;
    
    /**
     * user code 同登录权限模块的user code 是一样；
     */
    @ApiModelProperty(value="当前用户编号UserCode")
    private String userCode;
    
	public Long getCtime() {
		return ctime;
	}

	public void setCtime(Long ctime) {
		this.ctime = ctime;
	}

	public Long getUtime() {
		return utime;
	}

	public void setUtime(Long utime) {
		this.utime = utime;
	}

	public Integer getIsValid() {
		return isValid;
	}

	public void setIsValid(Integer isValid) {
		this.isValid = isValid;
	}

	public String getUserCode() {
		return userCode;
	}

	public void setUserCode(String userCode) {
		this.userCode = userCode;
	}

	public Base() {
	}
	
	public Base(String userCode) {
		this.userCode = userCode;
	}
	
	
// 如果没有使用到就删除 update code liaozhanggen 2017-03-29	
//	/* (non-Javadoc)
//	 * @see java.lang.Object#toString()
//	 */
//	@Override
//	public String toString() {
//		PropertyInfo[] props = class2Props.get(this.getClass());
//		if( props == null ){
//			props = getProps(this.getClass());
//		}
//		
//		StringBuilder   builder = new StringBuilder(1024);
//		boolean isFirst = true;
//		for (int i = 0, n = props.length; i < n; i++) {
//			try {
//				PropertyInfo propInfo = props[i];				
//				
//				Object value = propInfo.getMethod.invoke(this, new Object[0]);
//				if (isFirst)
//					isFirst = false;
//				else
//					builder.append(",");
//				builder.append(propInfo.propName);
//				builder.append(":");
//				if (value instanceof String)
//					builder.append("\"");
//				builder.append(value);
//				if (value instanceof String)
//					builder.append("\"");				
//			} catch (Exception e) {
//				e.printStackTrace();
//				logger.error("--转换异常--->");
//			}
//		}
//		return "{" + builder.toString() + "}";
//	}

//	/**
//	 * @param clazz
//	 * @return
//	 */
//	private static PropertyInfo[] getProps(Class<? extends Base> clazz) {
//		PropertyInfo[] props;
//		Method[] allMethods = clazz.getMethods(); 
//		List<PropertyInfo> propList = new ArrayList<PropertyInfo>();
//		
//		for (int i = 0, n = allMethods.length; i < n; i++) {
//			try {
//				Method method = allMethods[i];
//				if ((method.getModifiers() & Modifier.PUBLIC) == 1
//						&& method.getDeclaringClass() != Object.class
//						&& (method.getParameterTypes() == null || method
//								.getParameterTypes().length == 0)) {
//					String methodName = method.getName();
//					if (methodName.startsWith("get") || methodName.startsWith("is") ) {
//						PropertyInfo propInfo = new PropertyInfo();										
//						propInfo.getMethod = method;
//						if (methodName.startsWith("get")) {
//							propInfo.propName = methodName.substring(3, 4).toLowerCase()
//									+ methodName.substring(4);
//						} else if (methodName.startsWith("is")) {
//							propInfo.propName = methodName.substring(2, 3).toLowerCase()
//									+ methodName.substring(3);
//						}				
//						propList.add(propInfo);
//					}
//				}					
//			}catch(Exception e){
//				e.printStackTrace();
//				logger.error("--转换异常--->");
//			}
//		}
//		
//		props =  new PropertyInfo[propList.size()];
//		propList.toArray(props);
//		class2Props.put(clazz, props);
//		return props;
//	}
	
	/**
	 * 参数详情
	 * @author guwenwei
	 *
	 */
	static class PropertyInfo{
		Method getMethod;
		String propName;		
	}

}
